//app.js
const moment = require("./utils/moment.js");
const utils = require('./utils/util.js');
let login = require('./config/login.js');
const api = require('./config/api.js');

App({
  onLaunch: function (options) {
    console.log(options,123456)
    const that = this;
    moment.locale("zh-CN", {
      relativeTime: {
        future: '%s内',
        past: '%s前',
        s: '几秒',
        m: '1 分钟',
        mm: '%d 分钟',
        h: '1 小时',
        hh: '%d 小时',
        d: '1 天',
        dd: '%d 天',
        M: '1 个月',
        MM: '%d 个月',
        y: '1 年',
        yy: '%d 年'
      }
    });
    let first_leader = options.query.first_leader?options.query.first_leader:0
    //检测登陆
    login.checkLogin().then(res => {
      const token = wx.getStorageSync('token');
      if (token) {
        // this.globalData.isfirstnewuser = true;
        this.globalData.userInfo = wx.getStorageSync('userInfo');
        this.globalData.userInfoAuthorization = true;
        this.globalData.token = wx.getStorageSync('token');
        // that.getCartCount();
      } else {
        this.handleLogin(first_leader)
      }
    }).catch(err => {
      this.handleLogin(first_leader)
    })
    
    let systemInfo = wx.getSystemInfoSync();
    that.globalData.systemInfo = systemInfo;
    this.globalData.address = null

    //新版本更新提示
    const updateManager = wx.getUpdateManager()
    updateManager.onCheckForUpdate(function (res) {
      // 请求完新版本信息的回调
      // console.log(res.hasUpdate)
    })
    updateManager.onUpdateReady(function () {
      wx.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启应用？',
        success: function (res) {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            updateManager.applyUpdate()
          }
        }
      })
    })
    updateManager.onUpdateFailed(function () {
      // 新版本下载失败
      wx.showModal({
        title: '更新提示',
        content: '新版本已经上线啦~，请您删除当前小程序，重新搜索[隆嘉时鲜]打开哟~',
        showCancel: false
      })
    })
  },
  handleLogin(uid){
    console.log(uid,8989898)
    const that = this;
    login.loginByWeixin(uid).then(res => {
      that.globalData.userInfo = res.result;
      that.globalData.userInfoAuthorization = true;
      wx.setStorageSync("token", res.result.token);
      wx.setStorageSync("userInfo", res.result);
      that.globalData.token = res.result.token;
      // that.getCartCount();
      if (that.appCallBack && typeof that.appCallBack === 'function') {
        that.appCallBack(true)
      }
    })
  },
  onShow: function (options) {

  },

  /*方法说明
   *@method statistic 数据统计
   */
  statistic(json_data, lat = 0, lng = 0) {
    let json = {
      json_data: JSON.stringify(json_data),
      lat,
      lng,
      coordinate: 'GCJ02'
    }
    let jsonData = utils.getSignData(json);
    utils.post(api.reqUrls.recordData, jsonData).then(res => {
      console.log(res)
    })
  },
  /*方法说明
   *@method statistics 数据统计公共
   */
  statistics(pageurl, name, pos_type = '') {
    let userData = this.globalData;
    let json_data = [{
      type: 1,
      store_id: userData.address ? userData.address.select_store_id : '',
      pageurl,
      uid: userData.userInfo ? userData.userInfo.user_id : '',
      source_url: userData.sourceurl,
      name,
      pos_type,
      crd_store_id: userData.nextdayStore ? userData.nextdayStore : '0'
    }];
    let lat = '';//userData.address ? userData.address.lat : '';
    let lng = '';//userData.address ? userData.address.lng : '';
    let json = {
      json_data: JSON.stringify(json_data),
      lat,
      lng,
      coordinate: 'GCJ02'
    }
    let jsonData = utils.getSignData(json);
    utils.post(api.reqUrls.recordData, jsonData).then(res => {
      // console.log(res)
    })
    this.globalData.sourceurl = pageurl
  },
  globalData: {
    sourceurl: '', //数据统计：来源url
    token: '',
    userInfo: null,
    systemInfo: '',
    location: {},
    addressId:'',
    classifyIndex: 0,
    // classType: true, //首页跳转分类时店铺类型
    cartCount: 0,
    // tooFar: false, // 距离是否过远
    shade: false,
  },

  /*方法说明
   *@method checkUserInfoAuthorization 检测用户信息授权(供“我的”页面授权链接调用)
   *@return {promise} resolve 成功回调
   *@return {promise} reject 失败回调
   */
  checkUserInfoAuthorization() {
    return new Promise((resolve, reject) => {
      login.checkLogin().then(res=>{
        resolve(true)
      }).catch(error=>{
        wx.showModal({
          content: '您还没有登录哟,请点击头像登录',
          showCancel: false,
          confirmText: '我知道了',
          confirmColor: '#ff5151'
        })
        reject
      })

      // const that = this;
      // if (that.globalData.userInfoAuthorization) {
      //   resolve(true)
      // } else {
      //   wx.showModal({
      //     content: '您还没有登录哟,请点击头像登录',
      //     showCancel: false,
      //     confirmText: '我知道了',
      //     confirmColor: '#ff5151'
      //   })
      //   reject
      // }

    })
  },

  /*方法说明
   *@method checkUserInfoAuthorizationCart 检测用户信息授权(供添加购物车操作授权链接调用)
   *@return {promise} resolve 成功回调
   *@return {promise} reject 失败回调
   */
  checkUserInfoAuthorizationCart(e) {
    return new Promise((resolve, reject) => {
      login.checkLogin().then(res=>{
        resolve(res)
      }).catch(error=>{
        wx.navigateTo({
          url: '/page/tabBar/login/login',
        })
        reject
      })
    })
  },

  /*方法说明
   *@method showInfo 提示信息封装
   *@param{string} msg 将要显示的提示信息
   *@param{string} confirmText 确认按钮文字
   *@param{string} color 确认按钮颜色
   *@param{function} callback 点击确定回调
   */
  showInfo(msg, confirmText = "我知道了", color = "#eb3223", callback = () => {}) {
    wx.showModal({
      content: msg.replace(/\\r\\n/g, "\n"),
      showCancel: false,
      confirmText: confirmText,
      confirmColor: color,
      success: callback()
    })
  },

  /*方法说明
   *@method getCartNum 获取购物车商品数量并设置到TabBarBadge
   */
  getCartCount() {
    const that = this;
    let json = {
      token: that.globalData.token,
    }
    let jsonData = utils.getSignData(json);
    utils.post(api.reqUrls.getCartCount, jsonData).then(res => {
      if (res.status == 1) {
        that.globalData.cartCount = res.result.num;
        if (res.result.num) {
          // wx.setTabBarBadge({
          //   index: 2,
          //   text: res.result.num.toString()
          // })
        } else {
          wx.removeTabBarBadge({
            index: 2,
          })
        }
        if (that.cartCountCallback) {
          that.cartCountCallback(res.result.num)
        }
      } else {
        throw res.msg
      }
    }).catch(err => {
      that.showInfo(err.toString())
    })
  },

  /*方法说明
   *@method getImg 获取图片url
   *@param{array} data 商品列表
   *@return {string} 图片链接地址
   */
  getImg(data) {
    // if (!data) {
    //   return false;
    // }
    // data.forEach((item, index) => {
    //   item.img = api.reqUrls.getThumImages + "?width=250&height=250&goods_id=" + item.goods_id
    // })
    return data;
  },
  getInfo(e, callback = () => {}) {

    const that = this;
    const token = e;

    let json = {
      token
    }
    let jsonData = utils.getSignData(json); // 添加签名
    utils.post(api.reqUrls.userinfo, jsonData).then(res => {
      if (res.status == 1) {
        wx.setStorageSync("userInfo", res.result);
        that.globalData.userInfo = res.result;
        that.globalData.userInfoAuthorization = true;
        // that.getCartCount();
        if(typeof callback === 'function'){
          callback()
        }
        // callback()
        // if (that.userInfoReadyCallback) {
        //   that.userInfoReadyCallback(res)
        // }
      }
    })

    // utils.getSetting().then(res => {
    //   if (!res.authSetting['scope.userInfo']) { // 判断授权
    //     console.log(未获得用户信息授权)
    //     // throw '未获得用户信息授权';
    //   } else {
    //     let json = {
    //       token
    //     }
    //     let jsonData = utils.getSignData(json); // 添加签名
    //     return utils.post(api.reqUrls.userinfo, jsonData)
    //   }
    // }).then(res => {
    //   console.log("获取用户信息成功：", res)
    //   if (res.status == 1) {
    //     wx.setStorageSync("userInfo", res.result);
    //     that.globalData.userInfo = res.result; //将用户信息存储在全局数据中
    //     that.globalData.userInfoAuthorization = true;

    //     that.getCartCount();
    //     callback()
    //     // if (res.result.mobile == '') {
    //     //   wx.redirectTo({
    //     //     url: '/page/tabBar/bindphone/bindphone',
    //     //   })
    //     // }

    //     // 可能会在 Page.onLoad 之后才返回
    //     // 所以此处加入 callback 以防止这种情况
    //     if (that.userInfoReadyCallback) {
    //       that.userInfoReadyCallback(res)
    //     }
    //   } else {
    //     throw res.msg
    //   }
    // }).catch(err => {
    //   // that.showInfo(err.toString());
    // })
  },

  utils,
  api,
  moment
})